package com.shelly.singleton.type7;

/**
 * @author: Shelly
 * @create: 2023-01-10 16:57:18
 * @describe: 静态内部类
 * 1.优点：线程安全
 * 2.缺点：不能防止反射和序列化
 */
public class Singleton {
    // 私有化构造器
    private Singleton(){}

    // JVM加载类不会加载内部类
    private static class SingletonHelper{
        private static final Singleton instance = new Singleton();// final属性不能修改，值不变
    }

    // 提供外部调用方法
    public static Singleton getInstance(){
        return SingletonHelper.instance;// 调用时才会加载内部类，由于JVM机制保证线程安全：一个类只会加载一次
    }
    // 测试
    public static void main(String[] args) {
        Singleton a = getInstance();
        Singleton b = getInstance();
        System.out.println(a.equals(b));
        System.out.println(a);// 打印地址
        System.out.println(b);
    }
}
